package com.yuan.java抽象复习;

import static java.lang.System.out;
/*
 *  @author 雨安
 *  类名： Dog
 *  创建时间：2024/4/23
 *  继承抽象类需要重写该类里的所有抽象方法
 */
public class Dog extends Animal{
    @Override
    public void eat() {
        out.println("我在吃东西。");
    }

    @Override
    public void sleep() {
        out.println("我正在睡觉");
    }

    //还可以调用父类的非抽象方法  需要重写父类方法使用super.方法名进行调用
    @Override
    public void makeSound() {
        super.makeSound();
    }

    //测试
    public static void main(String[] args) {
        //创建Dog实例
        Dog dog = new Dog();
        //调用方法测试
        dog.eat();
        dog.sleep();
        dog.makeSound();
    }

    /**
     * 抽象类的意义
     * 一、提供模板：抽象类可以作为一组相关类的模板，帝国一他们共有的属性和方法。子类可以继承这个模板，并根据需要添加或覆盖方法
     * 二、强制实现：通过定义抽象方法，抽象类可以强制子类实现特定的方法。这有主语确保子类具有某种行为或功能
     * 三、代码复用：抽象类中的非抽象方法可以被子类继承和使用，从而实现代码服用，减少重复编写相同代码的工作量
     * 四、提高灵活性：抽象类允许我们定义一种通用的行为，而具体的实现细节可以由子类来决定。这使的代码更加灵活和可扩展
     */

}
